#pragma once
#include "Window.h"
#include "Shader.h"
#include "Buffer.h"
#include "Pipeline.h"
#include "Texture2D.h"

namespace Nitro::Renderer {

enum OpenGLProfile
{
    OpenGLProfile_Core = 0x00032001,
    OpenGLProfile_Compat = 0x00032002,
};

enum ClearFlags
{
    ColorBuffer = 0x00004000,
    DepthBuffer = 0x00000100,
    StencilBuffer = 0x00000400,
};

struct OpenGLConfig
{
    int versionMajor = 4;
    int versionMinor = 5;
    int samples = 8;
    OpenGLProfile profile = OpenGLProfile_Core;
};

void Init(OpenGLConfig desc = {});
void Clear(uint32_t mask = ColorBuffer | DepthBuffer);
void ClearColor(float r = 0.f, float g = 0.f, float b = 0.f, float a = 0.f);


}; // namespace Nitro::Renderer